3
תגובות

sql injection protection

פתח yaacov ,
בס"ד

שלום

מה דעתכם על הפתרון לבעיה

במסך ה-LOGIN אני קולט את שם המשתמש(מייל) + סיסמה
את הסיסמה אני בודק עם filter_var($email, FILTER_VALIDATE_EMAIL) - כך שאני יודע שהיא תקינה
שולף מהטבלה רשומה עפ"י המייל בלבד - ואם נשלפה רשומה אני משווה את הסיסמה עם הסיסמה שהמשתמש הקיש כך
שהוא יכול להקיש מה שהוא רוצה

מה דעתכם ?

3 תשובות

avatar ענה undefined ב 05 ליוני 2014 #

גרוע מאוד, לא עובדים ככה. אתה צריך להבריח תווים, זה מה שיגן עליך מsqli. אני מאוד ממליץ על השימוש בprepared statements של mysqli / PDO , תבחר. טיפ נוסף - אם אתה מצפה לקבל ערכים מספריים בלבד, תשתמש גם בintval.

avatar ענה Splash ב 05 ליוני 2014 #

בשביל מה להמציא את הגלגל מחדש? הפתחים של הדריבר דאגו לכך עם prepare statements תעשה את זה בתור סטנדרט - אם אני מקבל קלט מהמשתמש ומכניס אותו לשאילתה לבצע אותו תחת prepare statements בלי לשאול יותר מידי שאלות ככה זה יהפוך לסטנדרט אצלך ולא תצטרך לבכות אחר כך.

ד.א אין בעיה להשתמש בדרך שאתה עושה במידה ואתה רוצה להודיע לו שרק הסיסמא לא נכונה [פחות מאובטח משום שאז פורץ יודע שקיים משתמש כזה]

avatar ענה intval ב 05 ליוני 2014 #

לפי הRFC התו של גרש ' יכול להיות חלק מאימייל ,לכן רק בדיקה עם פילטר לא מספיקה.
שנית, פשוט כך לעצמך בתור הרגל להבריח סימנים שהמסד לא אוהב לפני שאתה מנסה לעבוד עם מסד.